#ifndef KITHARAUSER_H
#define KITHARAUSER_H

#include <QObject>
#include <QFuture>
#include "Kernel/Base/SharedData.h"

class KitharaUser final: public QObject
{
    Q_OBJECT
Q_SIGNALS:
    void SendData(const QString &message);

public:
    explicit KitharaUser(QObject *parent = nullptr);
    ~KitharaUser() override;

    /* 初始化 */
    bool Init();

    /* 启动服务 */
    bool Start();

    /* 获取网卡列表 */
    QStringList GetNetworkList() const;

    /* 设置网络索引 */
    void SetNetworkIndex(int index);

    /* 等待服务关闭 */
    void WaitForStop();

    /* 发送数据 */
    bool SendUdpData(const QString &message);

    /* 停止服务 */
    void Stop() const;

    /* 反初始化 */
    void UnInit();

private:
    /* 接收管道数据 */
    void RecevicePipeData();

private:
#ifdef USE_DEMO
    const char* customer_number_ {"DEMO"};      /* 客户编号 */
#else
    const char* customer_number_ {"070075"};    /* 客户编号 */
#endif

    SharedData* user_data_  {nullptr};          /* 共享内存中用户层数据 */
    KSHandle shared_mem_handle_{NULL};          /* 共享内存句柄 */
    KSHandle timer_call_back_handle_{NULL};     /* 定时器回调句柄 */
    KSHandle timer_handle_{NULL};               /* 定时器句柄 */
    QFuture<void> future_;                      /* 接收管道数据线程 */
    int network_index_ {-1};                    /* 网络索引 */
};



#endif //KITHARAUSER_H
